Python pour les SHS

Pourquoi programmer en Python ?

Émilien Schultz - Léo Mignot

2025-09-05

Petit tour de table

  • Léo & Émilien
    • Recherche & Instrumentation SHS
  • Vous
    • Discipline/sujet d’intérêt ?
    • Type de données ?
    • Quel usage de Python (dans l’idéal) ?
      • ça peut être juste la curiosité …

Objectifs de cette formation

  • Montrer l’intérêt de Python pour les SHS
  • Mettre le pied à l’étrier
  • Créer un espace de discussion
  • Éclairer certains aspects plus avancés
  • (Discuter la suite de vos projets)

Ce que cette formation n’est pas

  • De la théorie sur la programmation
  • Un tour complet du langage
  • Une formation à être développeurs.ses
  • La seule manière d’aborder la programmation
  • Un cours spécialisé (ML, etc.)

Organisation générale

  • Formation orientée application
  • Moments de présentation / de main dans la pâte
    • Important de faire des erreurs
    • Les résoudre ensemble

Dépôt Github : https://github.com/pyshs/cuso2025

Déroulement de la formation

6 séances

  1. Pourquoi programmer ?
  2. Les bases du langage Python
  3. Bibliothèques & écosystème
  4. Données tabulaires avec Pandas
  5. Éléments sur les statistiques et visualisations
  6. Introduction au traitement des données textuelles

9, 16, 23 mai et le 6, 13 et 20 juin (de 9h30 à 12h)

D’abord

  • D’abord répondre à 3 questions
    1. Pourquoi programmer (en recherche) ?
    2. Pourquoi Python ?
    3. Comment s’y mettre ?
  • Puis débuter : lancer un script
    1. C’est quoi un script ?
    2. Pourquoi les notebooks computationnels ?
    3. Quelques démos

Pourquoi programmer ?

“Certains disent « Il faut coder », d’autres rétorquent « Il faut décoder »” (Cardon, 2019)

La numérisation de la science

Programmer ?

Une définition : utiliser des inscriptions exprimées dans un langage formalisé (code/script) pour faire réaliser (exécuter) à un ordinateur des actions.

Pour qu’une instruction devienne une action, il faut toute une série de médiations (traduction) du conceptuel (la pensée) au matériel (l’opération).

Exécuter

Le passage du formel à l’action nécessite un opérateur qui respecte la syntaxe et la grammaire.

https://youtu.be/FN2RM-CHkuI?t=40

+ une chaîne de différentes “briques”

  • Matériel (stockage, calcul, périphériques)
  • Logiciel (OS, IDE, etc.)
  • Données (formats)
  • Language pour les instructions
  • Écriture algorithmique

Donc : un apprentissage multiniveaux

  • Se familiariser aux environnements informatiques
    • Ligne de commande, …
  • Penser la structures des données et leur diversité
    • Format de fichier : csv ou xls ?
  • Penser la matérialité des pratiques
    • Stockage mémoire vive, cloud ou disque dur ?

Les langages de programmation

Abstractions (source code) permettant d’écrire des instructions (machine code)

  • Séparer le matériel des opérations (portabilité)
    • Compilation/interprétation
  • Des langages différents (plus ou moins abstraits)
  • Des opérations partagées par tous les langages (opérations mathématiques)

Cinquante nuances

Programmer n’est pas forcément construire un logiciel

La programmation scientifique

  • Script : réaliser des petites tâches spécifiques
  • Interactivité : tester et expérimenter
  • Spécificité : des outils spécifiques
  • Temporaire : évolution permanente
  • “Amateurisme” : pas le coeur de métier

« in contrast to software engineering, there is no externally specified goal or design target. Instead, the user explores and discovers their goal as they gain understanding from iteratively executing the code and thinking about the results and their data. » (Granger et Perez, 2021)

Les raisons de programmer en recherche

  • Formaliser et automatiser son traitement
  • Dépasser ce qui est prévu dans les logiciels
  • Construire des outils pour soi et les autres
  • Utiliser les ressources que d’autres développent
  • Mieux maîtriser l’infrastructure numérique en général

Un pont vers la reproductibilité

Juliette Taka, & Nicolas M. Thiéry. (2018). Publishing reproducible logbooks explainer comic strip. Zenodo. https://doi.org/10.5281/zenodo.4421040

Non exclusif avec les logiciels

Pourquoi Python ?

Parce que tout est possible

Parce que langage de haut niveau

Parce que les data sciences

Et plus généralement

Une lingua franca

Le produit d’une histoire

Héritage d’une réflexion : The Origins of Python, Lambert Meertens, Inference, 2022

"It makes sense to think of the realm of programming languages as an ecosystem in which languages occupy their own niches. FORTRAN’s niche is high-performance scientific programming, involving heavy-duty numerical computation; that of COBOL is administration, based on files of data records. The C language is designed for systems programming, originally developed specifically for the Unix operating system. Just as there is no such thing as a general-purpose transportation vehicle, a truly one-size-fits-all general-purpose programming language does not exist; for a given highly specialized application domain it will always be possible to design a language tailored to, and better suited for, the specific needs of that domain [...]  

Python was originally designed to serve as a high-level scripting language for the Amoeba project. ABC was completely unsuitable for this purpose; it lived in a world of its own, shielding its users—by design—from the outside world. Python was expressly designed to interface with that outside world"

Traversé par une philosophie

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren’t special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one– and preferably only one –obvious way to do it.

Although that way may not be obvious at first unless you’re Dutch.

Now is better than never.

Although never is often better than right now.

If the implementation is hard to explain, it’s a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea – let’s do more of those!

En perpétuelle évolution

Release anuelle

Ancré dans la pratique scientifique

Python : un langage & un écosystème

Comment s’y mettre ?

Au commencement : un choix

Une diversité d’outils adaptés à des pratiques différentes

Une question récurrente

Python ou R ? Des points communs

  • Python et R ++ pour traitement de données
  • Python ++ interface informatique/privé
  • R ++ pour statistiques
  • Python ++ pour ML
  • Python ++ production

“the best second langage”

Plus généralement : Python, Julia, R ?

  • Des langages qui ont évolué
    • Par exemple les f-string, l’asynchrone…
  • Et qui évoluent
    • Par exemple les normes de gradual typing
  • Abstraction progressive
    • Cas du projet Jupyter
  • Pas de “meilleur langage” dans l’absolu

L’important est d’avoir un outil

Tout language est un équilibre

La particularité des SHS

  • centralité de la problématique
  • diversité de méthodes
  • diversité des données
  • diversité de cultures numériques
    • des communautés très computationnelles
    • d’autres moins …

Diversité des données

  • des supports différents (numérique, texte, images)
  • plus ou moins déjà mis en forme
  • des traditions d’analyses très variées
  • pas les mêmes niveaux d’exigences
  • des outils métiers spécifiques

Programmer, pour faire quoi ?

Important de construire une idée de ce qu’on peut faire.

Un vaste panorama de possibilités

  • des petites tâches
  • des opérations “discrètes”
  • des nouvelles opérations
  • de nouvelles collaborations

Usages “orientés mimétisme”

import scripttoutfait
scripttoutfait.run()

Usages “orientés scripts”

  • Manipuler des données
    • Découper un fichier trop volumineux
  • Transformer des données
    • Pour Iramuteq ou pour l’analyse de réseaux (mise en forme de corpus)
  • Automatiser des tâches
    • Conversion pdf > textes
  • Script dans logiciel QGIS ou dans OpenRefine

Usages “orientés statistiques”

  • Construire un graphique
    • Juxtaposition de plusieurs éléments temporels
  • Faire des statistiques
    • Notebook permettant l’exploration statistique des données d’une enquête en ligne
  • Exploration de textes
    • Bibliothèques de TAL pour analyse thématique
  • Parallélisation des calculs sur des serveurs

Usages “orientés automatisation”

  • Systématiser des collectes API
    • OCR Gallica, forums…
  • Surveillance d’événements
    • Modifications d’un site
  • Workflow exécutable
    • Ensemble des étapes collecte/analyse/résultats
  • Déployer un site web en Python

Usages “orientés IA”

  • Requêter les API (OpenAI, etc.)
  • Manipuler les modèles
    • Possibilités ouvertes par HuggingFace & co
  • Entraîner des modèles
    • Détection d’entitées nommées à façon
    • Fine tuner des LLM

Usages “orientés instrumentation”

  • Généraliser son code en fonction réxécutable
  • Publier une bibliothèque
  • Déployer un service en ligne

Usages “orientés logiciel”

  • Développer une bibliothèque dédiée générique (Ipysigma)
  • Développer un module pour un logiciel (QGIS?)
  • Développer des interfaces spécifiques
    • Mettre un modèle en service

Donc, tous programmeurs.euses ?


  • Non
    • Et pas nécessairement en Python
  • Mais une culture numérique devient indispensable
  • Cela facilite les échanges
  • Et une adaptation aux évolutions
    • LLM, IA, tralala

Les LLM changent (un peu) la donne (???)

Un paysage en transformation

Pratiques numériques des chercheurs, M. Le Béchec, 2020

Nous ne sommes pas égaux

Pour s’y mettre

  • Des trajectoires différentes
  • +/- familiarité à la programmation

Deux grandes philosophies :

  • CLI : la ligne de commande (linux notamment)
  • GUI : les interfaces graphiques (WYGIWYS)

Familiarité avec les instructions

La ligne de commande familiarise aux instructions écrites :

Conception étendue de la programmation

Caveat avant de commencer

  • Programmer ≠ tout savoir
    • De nombreux domaines spécialisés (ML, NLP, Réseaux, …)
  • Pas une baguette magique
  • Courbe d’apprentissage potentiellement longue (mais…)
  • Importance des ressources locales (collègues)

Programmer ≠ data science

Progresser ?

Pas en une fois

  • Développer l’espace des possibles
    • Bases du language et philosophie
    • Des exemples de ce qu’il est possible de faire
  • Identifier un usage pertinent pour soi
    • Construire de manière itérative sa pratique
  • Améliorer sa pratique
    • Ajouter les bonnes pratiques de code / partage
    • Renforcer les aspects “théoriques” et “esthétiques”

Valoriser les petites victoires

Possibilité d’un vrai plaisir

Ressources

Exécuter un script

C’est quoi un script ?

  • Script : ensemble de lignes de code
  • Exécuter : faire interpréter ce code par l’ordinateur

Pour cela, il faut avoir :

  • Python installé
  • Un endroit où écrire le langage

Python comme logiciel

  • Dans un fichier texte (+ Integrated (I)DE)
  • Dans le “logiciel” Python (console interactive)
  • Dans un Notebook (Interactive (I)DE)

Notebooks computationnels ?

Philosophie générale de la programmation lettrée

Préprint : Du laboratoire à Jupyter : La trajectoire d’un instrument logiciel libre de la science ouverte, 2023

Au-delà : la programmation en recherche

Le notebook n’est qu’un élément

  • D’une perspective ordinateur
    • Read-Eval-Print loop (REPL)
  • Vers une perspective de utilisateur
    • Write-Eval-Think-Loop (WETL)

Granger, Brian E., and Fernando Perez. 2021. “Jupyter: Thinking and Storytelling with Code and Data.” Computing in Science and Engineering 23 (2): 7–14.

Quel IDE choisir

Integrated Development Environment

  • Un (simple) éditeur de texte
  • Un IDE complet (VS Code)
  • Un environnement Jupyter

Ce que ça change ?

  • Plus d’options (coloration, mise en forme)
  • Plus de complexité…

Nous : notebooks Jupyter

Avantages :

Quelques limites :

  • Orde d’exécution des cellules
  • Vite confus

Si vous voulez des critiques : I don’t like notebooks.- Joel Grus

Anaconda : un environnement intégré de data science

Multiplier les environnements

Un programme/logiciel :

  • comprend du code
  • et dépend d’autres codes (des bibliothèques)

Nécessité d’installer ces bibliothèques qui constituent un environnement

Vous pouvez avoir plusieurs environnements virtuels

  • Anaconda gère ces environnements

Petite remarque sur ChatGPT&co

  • De plus en plus intégré dans la pratique
    • Et dans les outils (Copilot, Codeium, …)
  • Utile & pertinent de les utiliser
  • Ne remplace pas la capaciter de structurer du code

La programmation scientifique est surtout reprendre et modifier du code, il faut donc le rendre habitable.

Maintenant : exécutons des scripts

Quelques démos :

  • le script que nous allons disséquer
  • une démo d’analyse de données
  • une démo de construction d’un réseau
  • une démo d’une petite application